#pragma region Description
/*
     Copyright © 2011 Jesse 'LorgonJortle' Wilkerson
     See licensing in source (.cpp) file, or at:
     <http://www.gnu.org/licenses/> (GPL)

     File: Font.h
     Author: Jesse 'LorgonJortle' Wilkerson
     Description:
          In order to draw any string on the screen,
          you'll need to load a Font. Once the font
          has been loaded, you can easily draw any string
          by using the Draw method. Fonts can be drawn
          in any color, and any size. Using TTF fonts allows
          you to size your fonts as large/small as you'd like
          without the quality loss inherent in texture mapped
          fonts.
*/
#pragma endregion

#ifndef FONT_H
#define FONT_H

/*****************************************
                              OpenGL
*****************************************/
     #ifdef __APPLE__
         #include <glew.h>
         #include <SDL/SDL.h>
         #include <SDL_ttf.h>
     #else
         #include <GL/glew.h>
         #include <SDL.h>
         #include <SDL_ttf.h>
     #endif
/****************************************/

/*****************************************
                         Standard C++
*****************************************/
     #include <iostream>
     #include <string>
/****************************************/

/*****************************************
                         LOGL::GLib
*****************************************/
     /*****************************************
                                   Common
     *****************************************/
          #include "Vector2.h"
/****************************************/

namespace LOGL_GLib
{
     namespace Common
     {
          class Font
          {
          public:
               /* Constructs a Font object. */
               Font();
               /* Destruct the Font object, releasing any indebted resources. */
               ~Font();

               /* Loads the specified font with the specified size. */
               GLboolean Load(const std::string& _File, GLuint _Size);
               /* Gets the maximum height of the font. */
               GLint Height();
               /* Calculates the width of the specified string with this font. */
               GLint TextWidth(const std::string& _Text);

               /* The typeface of the font. */
               TTF_Font* TypeFace;

          private:
               /* The size the font has been loaded with. */
               GLint size;
               /* The ID of the font. */
               GLint id;
               /* The counter that gives IDs to ne fonts. */
               static GLuint idCounter;

          }; /* Class Font. */
     } /* Namespace Common. */
} /* Namespace LOGL_GLib. */

#endif
